package isg3.domain;


import isg3.data.*;

import java.util.Date;
import java.util.LinkedList;
import java.util.List;

/**
 * @author  gLo
 */
public class Administrador {
	IEventoDAO ied = null;
	IConcursoDAO icd = null;
	IUsuariosPorEventoDAO iuped = null;
	IUsuariosPorConcursoDAO iupcd = null;
	ILibrosPorEventoDAO ilped = null;
	ILibroDAO ild = null;
	ICategoriaDAO icad = null;
	IPrestamoDAO ipd = null;
	IUsuarioDAO iud = null;
	
	public Administrador(){
	}
	
	public void crearEvento(String titulo, String descripcion){//Parametros del constructor de Evento
		ied = new JDBCEventoDAO();
		Evento e = new Evento();
		e.setTituloEvento(titulo);
		e.setDescripcionEvento(descripcion);
		e.setFecha(new Date());
		ied.insert(e);
			
	}
	
	public void crearConcurso(String titulo, String descripcion){//Parametros del constructor de Concurso
		icd = new JDBCConcursoDAO();
		Concurso c = new Concurso();
		c.setTitulo(titulo);
		c.setDescripcion(descripcion);
		c.setFechaConcurso(new Date());
		c.setFechaInscripcion(new Date());
		icd.insert(c);
	}
	
	
	public void anyadirUsuarioAEvento(String idEvento, String idUser, String tarea){
		iuped = new JDBCUsuariosPorEventoDAO();
		iuped.insert(idEvento, idUser, tarea);
	}
	
	public void anyadirUsuarioAConcurso(String idConcurso, String idUser){
		iupcd = new JDBCUsuariosPorConcursoDAO();
		iupcd.insert(idConcurso, idUser);
	}
	
	public List eventosUsuario (String idU){
		iuped = new JDBCUsuariosPorEventoDAO();
		List l = iuped.selectEventos(idU);
		return l;
	}
	public List concursosUsuario (String idU){
		iupcd = new JDBCUsuariosPorConcursoDAO();
		List l = iupcd.selectConcursos(idU);
		return l;
	}
	public void terminaEvento(Evento e, String est){
		ied = new JDBCEventoDAO();
		ied.updateEstado(e,est);
	}
	public void terminaConcurso(Concurso c, String est){
		icd = new JDBCConcursoDAO();
		icd.updateEstado(c,est);
	}
	
	public List usuariosEvento(String tipo, String oide){
		iuped = new JDBCUsuariosPorEventoDAO();
		List l=iuped.selectAllUsuarios(tipo, oide);
		return l;
	}
	
	public String devuelveTarea(String oidu, String oide){
		iuped = new JDBCUsuariosPorEventoDAO();
		String t=iuped.selectTarea(oidu, oide);
		return t;
		
	}
	
	public List listaLibrosEvento(String oide){
		ilped = new JDBCLibrosPorEventoDAO();
		List l = ilped.selectAllLibros(oide);
		return l;
	}
	
	public List listaLibros(){
		ild = new JDBCLibroDAO();
		List l = ild.selectAllLibro();
		return l;
	}
	
	public List listaCategorias(){
		icad = new JDBCCategoriaDAO();
		List l = icad.selectAllCategorias();
		return l;
	}
	
	public void anyadirLibroAEvento(String ide, String idl){
		ilped = new JDBCLibrosPorEventoDAO();
		ilped.insert(ide, idl);
		
	}
	

	public List usuariosConcurso(String tipo, String oide){
		iupcd = new JDBCUsuariosPorConcursoDAO();
		List l=iupcd.selectAllUsuarios(tipo, oide);
		return l;
	}
	
	public void actualizarDatosConcurso(java.util.Date fi, java.util.Date fc, String premio, String idC){
		icd = new JDBCConcursoDAO();
		icd.updateConcurso(fi,fc,premio, idC);
	}
	
	public void solicitarprestamolibro(String user,String idlib){
		ipd = new JDBCPrestamoDAO();
		ipd.insertPrestamo(user,idlib);
	}
	
	public List prestamosUsuario(String idu){
		ipd = new JDBCPrestamoDAO();
		List l = ipd.selectPrestamosUsuario(idu);
		return l;
	}
	
	public Libro obtenerLibro(String idl){
		ild = new JDBCLibroDAO();
		Libro l = ild.select(idl);
		return l;
	}
	
	public List selectPrestamos(){
		ipd = new JDBCPrestamoDAO();
		List l = ipd.selectAllPrestamos();
		return l;
	}
	
	public Usuario selectUsuario(String idu){
		iud = new JDBCUsuarioDAO();
		Usuario u = iud.select(idu);
		return u;
	}
	
	public void eliminaPrestamo(String usuario, String libro){
		ipd = new JDBCPrestamoDAO();
		ipd.deletePrestamo(usuario,libro);
	}
	
	public void actualizaPrestamo(String usuario, String libro, String estado, java.util.Date fechaPres, java.util.Date fechaDev ){
		ipd = new JDBCPrestamoDAO();
		ipd.updatePrestamo(usuario, libro, estado, fechaPres, fechaDev);
	}
	
	public void actualizarDatosEvento(String idE, java.util.Date f){
		ied = new JDBCEventoDAO();
		ied.updateEvento(idE, f);
	}
	
}
